<?php
//
// 消息通知管理类
//
class App_Usermessage
{
    /**
     * 获取某个用户的消息列表
     * @param type $uid 用户id
     */
    public static function get_list($uid)
    {
        //获取用户的列表
        $list = DB::select()
            ->from('huiyuan_user_messages')
            ->where('uid', '=', $uid)
            ->execute()
            ->as_array();
        
        $count_total = self::get_message_total($uid);
        
        $count_unread = self::get_message_unread($uid);
                
        return array($count_total,$count_unread,$list);

    }
    
    /**
     *  记录某个用户的消息的阅读时间，并该状态为已读
     * @param type $id 消息ID
     */
    public static function set_status($id)
    {
        DB::update('huiyuan_user_messages')
            ->set(array('status' => '1','mtime' => date('Y-m-d H:i:s', time())))
            ->where('id', '=', $id)
            ->where('status', '=', 0)
            ->limit(1)
            ->execute();
    }
    
    //获取该用户总的消息数
    public static function get_message_total($uid)
    {
        $query = DB::select()
            ->from('huiyuan_user_messages')
            ->where('uid', '=', $uid)
            ->execute()
            ->as_array();
        
        return count($query);
    }
    
    //获取该用户未读的消息数
    public static function get_message_unread($uid)
    {
        $query = DB::select()
            ->from('huiyuan_user_messages')
            ->where('uid', '=', $uid)
            ->where('status', '=', 0)
            ->execute()
            ->as_array();
        
        return count($query);
    }
    
    /**
     * 获取某条通知消息的详细内容
     * @param type $id 消息ID
     */
    public static function get_content($id)
    {
        $content = DB::select()
            ->from('huiyuan_user_messages')
            ->where('id', '=', $id)
            ->execute()
            ->current();
        
        return $content;
    }
    
    /**
     * 添加消息
     * @param type $uid     给那个用户添加消息
     * @param type $message 消息内容
     * @param type $type    消息类型（来源）
     */
    public static function add_message($uid, $message ,$type)
    {
        list($insert_id, $rows) = DB::insert('huiyuan_user_messages')
            ->columns (array('uid', 'message', 'status','ctime' ,'type'))
            ->values (array($uid, $message, 0,date('Y-m-d H:i:s', time()), $type))
            ->execute();
    }
}
